package log;

import java.awt.Color;
import java.awt.Container;
import java.awt.Font;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JLayeredPane;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import javax.swing.SwingConstants;

import com.*;

public class Back extends JLayeredPane{
    JLabel a1 = new JLabel("账号");
    JLabel a2 = new JLabel("密码");

    // 标题
    JLabel title = new JLabel("学校管理系统");

    JTextField t1 = new JTextField(15);
    //密码框
    JPasswordField t2 = new JPasswordField(15);

    JButton jb = new JButton("登录");

    // 两个带图片的标签作为背景
    JLabel p1 = new JLabel(new ImageIcon("img/1.PNG"));
    JLabel p2 = new JLabel(new ImageIcon("img/2.PNg"));

    // 构造方法
    public Back(){
        // 使用自定义布局管理器
        this.setLayout(new MyLayout());

        // 添加控件，将两个图片添加在一层，先添加p1，让p1默认在上面
        this.add(p1,new Integer(1));
        this.add(p2,new Integer(1));
        // 将其他控件添加到第二层
        this.add(title,new Integer(2));
        this.add(a1,new Integer(2));
        this.add(a2,new Integer(2));
        this.add(t1,new Integer(2));
        this.add(t2,new Integer(2));
        this.add(jb,new Integer(2));
        

        // 登录按钮添加事件 使用lambda表达式 具体执行内容放在一个方法中
        jb.addActionListener(e->{
            login();
        });
    }

    // 登录方法
    public void login(){
        // 点击事件发生后获取用户的用户名和密码
        // 注意在JPasswordField中不使用getText来获取密码内容，而是用getPassword
        // getPassword返回类型为char[] 需要转换为字符串
        String userAccount = t1.getText();
        String userPassword = new String(t2.getPassword());

        // 传入参数进行查询
        boolean flag = JDBCQuery.executeQuery(userAccount, userPassword);

        // 如果返回值为true ， 登录成功，改一下背景图叠放顺序 
        if(flag){
            moveToBack(p1);
            System.out.println("登录成功");
        }else{
            System.out.println("登录失败");
        }



    }


    // 私有自定义布局管理器，继承于适配器
    private class MyLayout extends Shipeiqi{

        @Override
        public void layoutContainer(Container parent) {
            // TODO Auto-generated method stub
            int width = parent.getWidth();
            int height = parent.getHeight();

            // 对标签进行设计及布局
            // 设置字体
            a1.setFont(new Font("楷体",Font.BOLD,25));
            a2.setFont(new Font("楷体",Font.BOLD,25));
            title.setFont(new Font("楷体",Font.BOLD,35));
            // 设置文字在标签控件中水平居中
            a1.setHorizontalAlignment(SwingConstants.CENTER);
            a2.setHorizontalAlignment(SwingConstants.CENTER);
            title.setHorizontalAlignment(SwingConstants.CENTER);
            // 设置标签字体颜色
            a1.setForeground(Color.BLACK);
            a2.setForeground(Color.BLACK);
            title.setForeground(Color.BLACK);

            // 设置标签位置和大小
            a1.setBounds((width/2)-(width/6)-(width/12), (height/2)-(height/10), width/6, (int)t1.getPreferredSize().getHeight());
            a2.setBounds((width/2)-(width/6)-(width/12), (height/2)+(height/10), width/6, (int)t2.getPreferredSize().getHeight());
            title.setBounds((width/2)-(width/6), height/6, width/3, height/4);

            // 设置文本框位置，宽高使用默认大小
            t1.setFont(new Font("宋体",Font.BOLD,23));
            t2.setFont(new Font("宋体",Font.BOLD,23));
            t1.setBounds((width/2)-(width/12), (height/2)-(height/10), (int)t1.getPreferredSize().getWidth(),(int)t1.getPreferredSize().getHeight());
            t2.setBounds((width/2)-(width/12), (height/2)+(height/10), (int)t2.getPreferredSize().getWidth(),(int)t2.getPreferredSize().getHeight());

            // 设置按钮位置
            jb.setBounds((width/2)-(width/10), (height/2)+(height/4), width/8, height/12);
            jb.setFont(new Font("楷体",Font.BOLD,25));

            // 设置图片位置大小，铺满
            p1.setBounds(0, 0, width, height);
            p2.setBounds(0, 0, width, height);
        }

    }
}
